package abel.wlmr.model.type;

import abel.wlmr.model.WlmrException;
import abel.wlmr.model.WlmrField;

/**
 * ——透明转发接收等待报文超时时间：
 * ● D7：按位表示本字节 D0～D6 编码组成的数据的单位，置“0”： 10ms，置“1”： s。
 * ● D6～D0：编码表示透明转发接收等待报文超时时间的数值，数值范围 0～127。
 * 
 * @author Abel
 *
 */
public class WaitPacketTimeoutField extends WlmrField {

    private byte unit;

    private byte period;

    public WaitPacketTimeoutField() {
        super(1);
    }

    @Override
    public int getValue() {
        return unit << 7 | period;
    }

    @Override
    public void parseValue(int v) throws WlmrException {
        unit = (byte) ((v >> 7) & 1);
        period = (byte) (v & 0x7F);
    }

    /* (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return String.format("WaitPacketTimeoutField [unit=%s, period=%s]", unit, period);
    }

    /**
     * @return the unit
     */
    public byte getUnit() {
        return unit;
    }

    /**
     * @param unit
     *            the unit to set
     */
    public void setUnit(byte unit) {
        this.unit = unit;
    }

    /**
     * @return the period
     */
    public byte getPeriod() {
        return period;
    }

    /**
     * @param period
     *            the period to set
     */
    public void setPeriod(byte period) {
        this.period = period;
    }

}
